import 'package:json_annotation/json_annotation.dart';

part 'BaseResponse.g.dart';

/// 作者: Tao
/// 日期: 2024/3/18
/// 时间: 15:35
/// 描述: 泛型实体类怎么序列/反序列化
/// 让生成的fromJson()和toJson()中包含额外的函数参数，用于指明：
/// 如何将泛型类型T的数据转换为Json，以及如何将Json转换为T
@JsonSerializable(genericArgumentFactories: true)
class BaseResponse<T> {
  final int? errorCode;
  final String? errorMsg;
  final T? data;

  BaseResponse(this.errorCode, this.errorMsg, this.data);

  // 添加工厂方法，将json数据转换为实体类
  factory BaseResponse.fromJson(Map<String, dynamic> json,
      T Function(dynamic json) fromJsonT) =>
      _$BaseResponseFromJson(json, fromJsonT);

  // 添加toJson方法，将实体类转换为json数据
  Map<String, dynamic> toJson(dynamic Function(T value) toJsonT) =>
      _$BaseResponseToJson(this, toJsonT);
}
